DEXCS2017 for OpenFOAM(R) では、これまでのFOCUSだけでなく名大スパコン、その他のリモートサーバーへのアクセスが可能になりました。
但し、サーバー名やログイン情報などはユーザーさん自身でカスタマイズしてもらう必要があるので、以下にその方法を記しておきます(備忘録)。
準備は少々面倒ですが、これでリモートサーバーでの計算がかなり楽ちんになること請け合いです。
準備するもの
FOCUSなどSSH(公開鍵認証)でアクセスする場合には、サーバー側に公開鍵を登録、手元にペアーとなる秘密鍵が必要になりますが、この秘密鍵を、ホームディレクトリ直下の .ssh というフォルダに(存在しなければ作成して)収納しておく。またその中には、configという名称のファイルを用意して、その中にサーバー名や秘密鍵を定義しておく。
ここで、これらファイルのパーミッションに注意。所定の値になっていなかったら下記のように変更する。
configファイルの記述例
(朱字部分を自身のものに置き換えて使用して下さい)
Host FocusLogin # FOCUS ログインサーバー
User u###0001 # FOCUSでのユーザー名
Hostname ssh.j-focus.jp
IdentityFile ~/.ssh/focus_rsa # 秘密鍵
ServerAliveInterval 60Host ffFocus # FOCUS フロントエンドサーバー
HostName ff
User u###0001 # FOCUSでのユーザー名
ProxyCommand ssh FocusLogin -W %h:%pHost moguraServer # ローカルネットワーク内の計算サーバー
HostName 192.168.#.# # 計算サーバーのIPアドレス
User dexcs # 計算サーバーでのユーザー名
IdentityFile ~/.ssh/id_rsa.2 # ダミー
IdentitiesOnly yes # パスワード認証(公開鍵認証は使わない)Host nadaiCx # 名大スパコンCx
HostName cx.cc.nagoya-u.ac.jp
User z##### # 名大スパコンでのユーザー名
IdentityFile ~/.ssh/nadai_rsa # 秘密鍵
準備その1(手動でアクセス確認)
上記の設定にミスがあると、そもそも自動アクセスできないので、以下のようにしてそれぞれのリモートサーバーにちゃんとログインできる事を確認しておきます。
SSH(公開鍵認証)でアクセスするFOCUSサーバーの場合
- ssh FocusLogin と入力
- yes を入力(初めてアクセスした場合のみ)
- 公開鍵を作成した際に使用したパスワードを入力
- exit を入力
SSH(パスワード認証)でアクセスする場合
- ssh moguraServer (config中で定義したHost)と入力
- yes を入力(初めてアクセスした場合のみ)
- config中で、ダミーの秘密鍵を定義してあるので、Warningが出ているが、無視してよい
- 登録してあるログインパスワードを入力
- exit を入力
準備その2(パスワード登録して自動アクセス)
TreeFoamにてリモートサーバーをマウントしたり、リモートでの作業(コマンド発行)をするには、通常、その都度パスワードが要求されますが、このパスワードを登録しておいて、必要時に自動発生させる仕組みとしてkeyringがあり、DEXCSではseahorse(下図のメニュー⇒アクセサリ⇒パスワードと鍵)を使って登録します。
+ボタンを押すと、以下のメニューが現れる
「セキュアシェルの鍵」を選択して「続行」ボタンを押す
①の名前は何でも良い。
パスワードを尋ねられるが、無しでも良い。再度尋ねられる。
サーバーのアドレスは、.ssh/config中のHostで定義した名前を書く。ログイン名は、Userで定義してある名前を書く。
ここで入力するパスワードは、公開鍵を作成した際に使用したパスワード。上記サーバーアドレス、ログイン名、パスワードが正しく入力されていれば、下図のように、登録される。
端末に戻って、ログインできるかどうか確認。
- ssh FocusLogin と入力(ログインサーバーへアクセス)
- ⇒パスワード入力無しでログイン出来た。⇒ exit を入力
- ssh ffFocus と入力(フロントエンドサーバーへアクセス)
- yes を入力(フロントエンドサーバーには初めてアクセスしたので)
- ⇒パスワード入力無しでログイン出来た。⇒ exit を入力
- 再度 ssh ffFocus と入力
- ⇒パスワード入力無しでログイン出来た。⇒ exit を入力
SSH(パスワード認証)サーバー(本例ではmoguraServer)での登録も同様に実施できる
登録されたら、ここで鍵の名前(本例ではid_rsa.1)を覚えておいて、.ssh/configファイルを以下のように、「ダミー」で記されていた鍵の名前(朱字部分)を書き換える。
Host moguraServer # ローカルネットワーク内の計算サーバー
HostName 192.168.#.# # 計算サーバーのIPアドレス
User dexcs # 計算サーバーでのユーザー名
IdentityFile ~/.ssh/id_rsa.1 # ダミー
IdentitiesOnly yes # パスワード認証(公開鍵認証は使わない)
端末に戻って、ログインできるかどうか確認。
- ssh moguraServer と入力
- ⇒パスワード入力無しでログイン出来た。⇒ exit を入力
準備その3(TreeFoam)
一旦TreeFoamを起動すれば、ホームディレクトリ直下に、.TreeFoamUser というフォルダが作成されており、
上図の順番で展開し、sshs_data をダブルクリックして編集する。編集方法はファイル中に、以下のように記されている。
参考に、本例では以下のように設定している。
設定が終わったら、再度TreeFoamを起動。
なお、事前にリモートサーバーをマウント用にデスクトップ上にserverという空フォルダを作成しておき、TreeFoamを起動したら、その空フォルダ(server)を選択(下図の状態)
上図中、赤枠あたりでマウス右クリックすると、以下のメニューが現れるので、
sshfsサーバーマウントを選択する。
本例では、3つのサーバーが登録されているので、上図のようにして取捨選択できる。選択したサーバーへの接続が完了すると、下のダイヤログが現れる。
OKボタンを押すと、TreeFoam上では。。。
空フォルダであった部分にリモートサーバーがマウントされ、しばらくすると展開できるようになる。
アンマウントは、右クリックして、sshfsサーバーアンマウントを選択(下図)。
準備その4(サーバー側設定)
以上の準備で基本的な操作は可能になるが、さらにサーバー側の設定で、より快適に使いやすい環境を構築できる。
サーバーをマウントしたら、/opt/TreeFoam/TreeFoamServer というフォルダをサーバーへコピーする(下図参照) 。
- TreeFoam上のserverフォルダをダブルクリックするとファイルマネージャが起動し、サーバー側を一覧できる。
- ローカルデスクトップ上のホームフォルダをダブルクリックし、ローカル側を一覧。
- ファイルシステムをクリック
- opt ⇒ TreeFoamをダブルクリック
- TreeFoamServerフォルダをサーバー側へドラッグ&ドロップ
サーバー側の.bash_profile の最後に、. setEnviron の1行(下の朱字部分)を追加
# .bash_profile# .bash_profile
# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
. setEnviron # 追加
使ってみよう!
serverジョブ管理の起動例
ジョブ管理メニューそのものの使い方は同梱のTreeFoamマニュアルを参照下さい
FOCUSの場合
名大スパコンCxの場合
ローカルサーバーなど
現時点では、FOCUSスパコンと、名大スパコンCx,FxのJob管理メニューが使えるだけです。
これが使えないシステムでは、loginシェルを起動して作業することになります。
loginシェル起動
全サーバー共通
ジョブを流してみる
- ls と入力 (内容確認)
- sbatch submit.sh を入力
- squeue コマンドにてジョブの進行状況確認
- ls にて、計算進行中のファイル確認
注記:ここでマウントしたサーバー(moguraServer)はDEXCS2017 for OpenFOAM(R)を使ってインストールしたマシンで、バッチジョブコントロールシステムとしてはSLURMが動作中です。
Windows10のVB上のDECXS2017から、京大スパコン、ローカルubuntuにサーバー接続を試みています。準備その2(パスワード登録して自動アクセス)で、パスワード入力無しでログインの確認までできています。sshs_dataを記述し、その内容をsshfsサーバーマウント時のサーバ指定画面で確認できますが、実行すると、BAD ADRESSというエラーが出て、マウントできません。BAD ADRESSが示す詳細お教え願いないでしょうか?